/**
 * 搜索字段定义
 */
export interface SearchField {
  /** 字段键名 */
  key: string
  /** 字段显示名称 */
  label: string
  /** 字段类型 */
  type: 'text' | 'number' | 'date' | 'datetime' | 'select'
  /** 下拉选项（当type为select时使用） */
  options?: Array<{ label: string; value: any }>
}

/**
 * 搜索操作符定义
 */
export interface SearchOperator {
  /** 操作符值 */
  value: string
  /** 操作符显示名称 */
  label: string
  /** 支持的字段类型 */
  types: string[]
}

/**
 * 搜索条件
 */
export interface SearchCondition {
  /** 字段名 */
  field: string
  /** 操作符 */
  operator: string
  /** 值 */
  value: any
  /** 占位符文本 */
  placeholder?: string
}

/**
 * 高级查询参数
 */
export interface AdvancedQuery {
  /** 搜索条件列表 */
  conditions: SearchCondition[]
  /** 条件之间的逻辑关系，默认为AND */
  logic?: 'AND' | 'OR'
}

/**
 * 保存的查询条件组
 */
export interface SavedConditionGroup {
  /** 唯一标识 */
  id: string
  /** 条件组名称 */
  name: string
  /** 搜索条件列表 */
  conditions: SearchCondition[]
  /** 条件之间的逻辑关系 */
  logic: 'AND' | 'OR'
  /** 创建时间 */
  createdAt: string
}

/**
 * 分页高级查询参数
 */
export interface PageAdvancedQuery {
  /** 页码 */
  current: number
  /** 页大小 */
  size: number
  /** 高级查询条件 */
  advancedQuery?: AdvancedQuery
  /** 排序字段 */
  orderBy?: string
  /** 排序方式 */
  orderMode?: 'asc' | 'desc'
}

/**
 * 操作符枚举
 */
export enum QueryOperator {
  /** 等于 */
  EQ = 'eq',
  /** 不等于 */
  NE = 'ne',
  /** 包含 */
  LIKE = 'like',
  /** 不包含 */
  NOT_LIKE = 'notLike',
  /** 以...开头 */
  LIKE_LEFT = 'likeLeft',
  /** 以...结尾 */
  LIKE_RIGHT = 'likeRight',
  /** 大于 */
  GT = 'gt',
  /** 大于等于 */
  GE = 'ge',
  /** 小于 */
  LT = 'lt',
  /** 小于等于 */
  LE = 'le',
  /** 在范围内 */
  IN = 'in',
  /** 不在范围内 */
  NOT_IN = 'notIn',
  /** 为空 */
  IS_NULL = 'isNull',
  /** 不为空 */
  IS_NOT_NULL = 'isNotNull'
}

/**
 * 字段类型枚举
 */
export enum FieldType {
  /** 文本 */
  TEXT = 'text',
  /** 数字 */
  NUMBER = 'number',
  /** 日期 */
  DATE = 'date',
  /** 日期时间 */
  DATETIME = 'datetime',
  /** 下拉选择 */
  SELECT = 'select'
}